stm32使用MPU6050读取温度值验证I2C 您所在的位置:网站首页 mpu6050 校准 stm32使用MPU6050读取温度值验证I2C

stm32使用MPU6050读取温度值验证I2C

2023-09-10 15:51| 来源: 网络整理| 查看: 265

通过MPU6050测温来进行I2C的验证学习

关于MPU6050寄存器相关可以参考https://blog.csdn.net/he__yuan/article/details/76559569 I2C时序很多,我是直接以原子I2C的程序结合MPU6050来进行测温实验

# include "MPU6050.H" # include "delay.h" # include "usart.h"

其中MPU6050.H文件也只是简单的定义了一些我用到的地址

#ifndef __MPU6050_H #define __MPU6050_H #include "I2C.H" # define Slave_Addr 0x68 # define Power_Register_Addr 0x6B//电源寄存器地址 # define Write_Bit 0 # define Read_Bit 1 # define Power_Register_Addr_ResetNum 0x80

函数的声明我没粘贴进去 之后就是整个代码

# include "MPU6050.H" # include "delay.h" # include "usart.h" //初始化IIC接口 void MPU6050_Init(void) { int temp = 0; IIC_Init(); MPU6050_WriteOneByte(Power_Register_Addr,Power_Register_Addr_Reset);//电源管理寄存器复位 delay_ms(100); MPU6050_WriteOneByte(Power_Register_Addr,0x00);//唤醒MPU6050 } u8 MPU6050_ReadOneByte(u16 ReadAddr) { u8 temp=0; IIC_Start(); IIC_Send_Byte((Slave_Addr u8 t; for(t=0;t u8 t; u32 temp=0; for(t=0;t while(NumToRead) { *pBuffer++=MPU6050_ReadOneByte(ReadAddr++); NumToRead--; } } //在指定地址开始写入指定个数的数据 //WriteAddr :开始写入的地址 对24c02为0~255 //pBuffer :数据数组首地址 //NumToWrite:要写入数据的个数 void MPU6050_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite) { while(NumToWrite--) { MPU6050_WriteOneByte(WriteAddr,*pBuffer); WriteAddr++; pBuffer++; } } void IIC_Delay(void) { delay_us(2); } u8 MPU_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf) { IIC_Start(); IIC_Send_Byte((Slave_Addr if(len==1)*buf=IIC_Read_Byte(0);//读数据,发送nACK else *buf=IIC_Read_Byte(1); //读数据,发送ACK len--; buf++; } IIC_Stop(); //产生一个停止条件 return 0; } short MPU_Get_Temperature(void) { u8 buf[2]; short raw; float temp; MPU_Read_Len(Slave_Addr,0x41,2,buf); raw=((u16)buf[0]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有